<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
  // 对象（Object）：everything is object，一切皆对象
  // 只要你关心它，想研究它，它就是对象，不管它是具体的事物，还是抽象的事物

  // 1.定义对象
  // 1.1 new Object（）
  // let person1 = new Object();
  // person1.name = 'lisi';
  // person1.age = 13;
  // console.log(person1);

  // 1.2定义直接量 推荐此种方式
  let person2 = {
    name: 'wangwu', //属性与属性之间由逗号隔开
    age: 23,
    girlfriend: {
      name: 'xiaohua',
      age: 18,
    },
    beforeGirFriends:[ //多个人的时候可以用数组
      {
        name:'xiaoa',
        age: 20,
        boyfriend:{
          name:'zhangsan',
          age:22
        }
      },
      {
        name:'xiaob',
        age: 20
      },
      {
        name:'xiaoc',
        age: 20
      }
    ],
    code: function(type){
      console.log('看我写的代码' + type);
    },
    // 方法的简写（es6版本添加的新功能）
    eat(){
      console.log('eating');
    }
  }

  // 括号表示法
  let aa = 'nam'
  console.log(person2[aa + 'e']);

  //取属性值：对象.属性
  console.log(person2.name);

  //添加属性
  person2.job = '前端开发工程师';

  person2.code('商城')
  person2.eat();

  // 类
  class Person {
    // name age
    // eat
    // 属性写到构造函数里
    constructor(name, age){
      // this 是对当前对象的引用
      this.name = name;
      this.age = age;
    }
    // 方法直接写到类里
    eat(){
      console.log(this.name + ' is eating');
    }
    code(){
      console.log('看' + this.name + '写的代码');
    }
    cat(){
      console.log(this.name + ' 有一只小猫');
    }
  }
  // 实例对象
  let person3 = new Person('zhaosi',80);
  person3.eat();
  person3.code();
  person3.cat();
  console.log(person3);
  let person4 = new Person('liuneng',60);


  // 数组(array)：数据的组合，可以用来存多个值
  let arr = [2,3,4]; // 定义一个数组arr，里面有三个元素
  // 数组有索引（下标），是从0开始的
  for(var i = 0;i<arr.length;i++){
    console.log(arr[i]);
  }

  // let arr = ["a","b","c"]; //数组中的元素类型为字符串




  // 面向对象（Object-Oriented）
  // OOA(Analysis 分析)
  // OOD(Design 设计)
  // OOP(Programming 编程)
  </script>
</body>
</html>